System and method for performing an incremental backup for a persistent storage system that stores data for a node cluster

ABSTRACT

A method for managing a persistent storage system includes obtaining, by a first node in a node cluster, a write request, wherein the node cluster comprises the first node and a second node, processing the write request, storing data associated with the write request in a persistent storage system, updating a block-based change list based on the storing, making a first determination that a synchronization schedule is triggered, and in response to the first determination: initiating a block-based change list synchronization to the second node.

CROSS-REFERENCE TO RELATED APPLICATION

This application claims priority to Indian Patent Application No.201941052138, filed Dec. 16, 2019, which incorporated by referenceherein in its entirety.

BACKGROUND

Computing devices may include any number of internal components such asprocessors, memory, and persistent storage. Each of the internalcomponents of a computing device may be used to generate data and toexecute functions. The process of generating, storing, and sending datamay utilize computing resources of the computing devices such asprocessing and storage. The utilization of the aforementioned computingresources to generate data and to send data to other computing devicesmay impact the overall performance of the computing resources.

SUMMARY

In general, in one aspect, the invention relates to a method forperforming backup operations. The method includes obtaining, by a firstnode in a node cluster, a write request, wherein the node clustercomprises the first node and a second node, processing the writerequest, storing data associated with the write request in a persistentstorage system, updating a block-based change list based on the storing,making a first determination that a synchronization schedule istriggered, and in response to the first determination: initiating ablock-based change list synchronization to the second node.

In general, in one aspect, the invention relates to a system thatincludes a processor and memory that includes instructions which, whenexecuted by the processor, perform a method. The method includesobtaining, by a first node in a node cluster, a write request, whereinthe node cluster comprises the first node and a second node, processingthe write request, storing data associated with the write request in apersistent storage system, updating a block-based change list based onthe storing, making a first determination that a synchronizationschedule is triggered, and in response to the first determination:initiating a block-based change list synchronization to the second node.

In general, in one aspect, the invention relates to a non-transitorycomputer readable medium that includes computer readable program code,which when executed by a computer processor enables the computerprocessor to perform a method for performing backup operations. Themethod includes obtaining, by a first node in a node cluster, a writerequest, wherein the node cluster comprises the first node and a secondnode, processing the write request, storing data associated with thewrite request in a persistent storage system, updating a block-basedchange list based on the storing, making a first determination that asynchronization schedule is triggered, and in response to the firstdetermination: initiating a block-based change list synchronization tothe second node.

BRIEF DESCRIPTION OF DRAWINGS

Certain embodiments of the invention will be described with reference tothe accompanying drawings. However, the accompanying drawings illustrateonly certain aspects or implementations of the invention by way ofexample and are not meant to limit the scope of the claims.

FIG. 1 shows a diagram of a system in accordance with one or moreembodiments of the invention.

FIG. 2 shows a diagram of a node in accordance with one or moreembodiments of the invention.

FIG. 3A shows a flowchart for maintaining a block-based change list inaccordance with one or more embodiments of the invention.

FIG. 3B shows a flowchart for managing a node failover in accordancewith one or more embodiments of the invention.

FIG. 3C shows a flowchart for initiating an incremental backup inaccordance with one or more embodiments of the invention.

FIGS. 4A-4C show an example in accordance with one or more embodimentsof the invention.

FIG. 5 shows a diagram of a computing device in accordance with one ormore embodiments of the invention.

DETAILED DESCRIPTION

Specific embodiments will now be described with reference to theaccompanying figures. In the following description, numerous details areset forth as examples of the invention. It will be understood by thoseskilled in the art that one or more embodiments of the present inventionmay be practiced without these specific details and that numerousvariations or modifications may be possible without departing from thescope of the invention. Certain details known to those of ordinary skillin the art are omitted to avoid obscuring the description.

In the following description of the figures, any component describedwith regard to a figure, in various embodiments of the invention, may beequivalent to one or more like-named components described with regard toany other figure. For brevity, descriptions of these components will notbe repeated with regard to each figure. Thus, each and every embodimentof the components of each figure is incorporated by reference andassumed to be optionally present within every other figure having one ormore like-named components. Additionally, in accordance with variousembodiments of the invention, any description of the components of afigure is to be interpreted as an optional embodiment, which may beimplemented in addition to, in conjunction with, or in place of theembodiments described with regard to a corresponding like-namedcomponent in any other figure.

In general, one or more embodiments of the invention relates to systemsand methods for generating incremental backups of a shared persistentstorage system in a node cluster. The shared persistent storage systemmay store data from multiple nodes. Each node may locally store ablock-based change list that tracks the changes made to sections of thepersistent storage system by the node or by other nodes in the nodecluster. The block-based change list may be synchronized with the othernodes in the node cluster such that, when an incremental backup of thepersistent storage system is initiated, the backup agent performing suchbackup may utilize the block-based change list to determine whichportions of the persistent storage system to back up.

FIG. 1 shows a diagram of a system in accordance with one or moreembodiments of the invention. The system may include one or more clients(100), a node cluster (112), and a backup storage system (150). Thesystem may include additional, fewer, and/or different componentswithout departing from the invention. Each component may be operablyconnected to any of the other components via any combination of wiredand/or wireless connections. Each of the aforementioned components isdiscussed below.

In one or more embodiments of the invention, the node cluster (112) is acollection of physical and/or logical entities that execute applications(not shown) using computing resources of one or more computing devices.Each node (112A, 112N) in the node cluster (112) may be performingsimilar or different processes. In one or more embodiments of theinvention, each node (112A, 112N) provides services to users, e.g.,clients (100). For example, a node (112A, 112N) may host applications.The applications may be, for example, instances of databases, emailservers, and/or other applications. The nodes (112A, 112N) may hostother types of applications without departing from the invention.

In one or more embodiments of the invention, one node (e.g., 112A, 112N)in the node cluster (112) may serve as the primary node. The primarynode in the node cluster (112) may include functionality for writingdata to the persistent storage system (120) and tracking the changes tothe persistent storage system (120) as the data is written to thepersistent storage device. The primary node may further send the trackedchanges to the other nodes in the node cluster (112). The primary nodemay perform the aforementioned functionality in accordance with FIG. 3A.

In one or more embodiments of the invention, a node (112A, 112N) in thenode cluster that is not a primary node may include functionality forassuming the role of primary node based on a notification that thecurrent primary node experiences a failover. In one or more embodimentsof the invention, the primary node may experience a failover based on,for example, an unexpected reboot of the primary node, a failure by theprimary node to connect to the persistent storage system (120), afailure by the primary node to connect to the clients (100), anunexpected shutdown by the primary node, and/or a failure by the primarynode to execute an application. The failover may occur via other factorswithout departing from the invention. The process of the node (e.g.,112A, 112N) assuming the role of the primary node may be performed inaccordance with the method illustrated in FIG. 3B. The aforementionedprocess may be performed via other methods without departing from theinvention.

In one or more embodiments of the invention, each node (112A, 112N) inthe node cluster (112) is implemented as a computing device (see e.g.,FIG. 5). The computing device may be, for example, a mobile phone, atablet computer, a laptop computer, a desktop computer, a server, adistributed computing system, or a cloud resource. The computing devicemay include one or more processors, memory (e.g., random access memory),and persistent storage (e.g., disk drives, solid state drives, etc.).The computing device may include instructions, stored on the persistentstorage, that when executed by the processor(s) of the computing devicecause the computing device to perform the functionality of the node(112A, 112N) described throughout this application and/or all, or aportion thereof, of the methods illustrated in FIGS. 3A-3B.

In one or more embodiments of the invention, each node (112A, 112N) inthe node cluster (112) is implemented as a logical device. The logicaldevice may utilize the computing resources of any number of computingdevices and thereby provide the functionality of the node (112A, 112N)described throughout this application and/or all, or a portion thereof,of the methods illustrated in FIGS. 3A-3B.

In one or more embodiments of the invention, the system further includesa persistent storage system (120). In one or more embodiments of theinvention, the persistent storage system (120) stores data written bythe nodes (112A, 112N) in the node cluster (112). The data may be dataobtained from other components without departing from the invention.

In one or more embodiments of the invention, the persistent storagesystem (120) includes any number of persistent storage devices that,collectively, store the data as written by the nodes (112A, 112N) in thenode cluster.

The persistent storage devices may be (or include) non-volatile storage.In other words, the data stored in the persistent storage devices doesnot get lost or removed when the persistent storage devices lose power.Each of the persistent storage devices may be (or include), for example,solid state drives, hard disk drives, and/or tape drives. The persistentstorage devices may include other types of non-volatile ornon-transitory storage mediums without departing from the invention.

Each persistent storage device (not shown) may be further divided intoany number of portions that may be tracked when new data is written tosuch portions. The portions may be divided based on the type ofpersistent storage device. For example, a persistent storage device maybe a hard disk drive. Each portion of a hard disk drive may be a sectoror a disk section. Each sector may be tracked by the nodes (112A, 112N)in the node cluster (112) whenever new data is written to the sectors.The hard disk drive may be divided into other portions without departingfrom the invention.

In one or more embodiments of the invention, the persistent storagesystem (120) is implemented as a logical device. The logical device mayutilize the computing resources of any number of computing devices (orpersistent storage devices (e.g., disk drives, solid state drives,etc.)) and thereby provide the functionality of the persistent storagesystem (120) described throughout this application.

In one or more embodiments of the invention, the node cluster (112)further includes a backup agent (114). The backup agent may includefunctionality for generating backups of the persistent storage system(120). Each backup (152, 154) may include all, or a portion thereof, ofthe data in the persistent storage system (120) at a specified point intime.

In one or more embodiments of the invention, the backup agent (114) maygenerate the backups based on backup policies implemented by the backupagent (114). The backup policies may specify a schedule in which thepersistent storage system (120) is to be backed up. The backup agent(114) may be triggered to execute a backup in response to a backuppolicy. The backup agent may perform the incremental backup via themethod illustrated in FIG. 3C. The backup agent may perform theincremental backup via any other method without departing from theinvention.

In one or more embodiments of the invention, the backup agent (114) is aphysical device. The physical device may include circuitry. The physicaldevice may be, for example, a field-programmable gate array, applicationspecific integrated circuit, programmable processor, microcontroller,digital signal processor, or other hardware processor. The physicaldevice may be adapted to provide the functionality of the backup agent(114) described throughout this application.

In one or more of embodiments of the invention, the backup agent (114)is implemented as computer instructions, e.g., computer code, stored ona persistent storage that when executed by a processor of a computingdevice causes the computing device to provide the functionality of thebackup agent (114) described throughout this application. The backupagent may be internal to one or more nodes (112A, 112N) or external toall nodes (112A, 112N) in the node cluster without departing from theinvention.

In one or more embodiments of the invention, the client(s) (100) utilizeservices provided by the node cluster (112). Specifically, the client(s)(100) may utilize the applications in the nodes (112A, 112N) to obtain,modify, and/or store data. The data may be generated from applicationshosted in the node cluster (112).

In one or more embodiments of the invention, a client (100) isimplemented as a computing device (see e.g., FIG. 5). The computingdevice may be, for example, a mobile phone, a tablet computer, a laptopcomputer, a desktop computer, a server, a distributed computing system,or a cloud resource. The computing device may include one or moreprocessors, memory (e.g., random access memory), and persistent storage(e.g., disk drives, solid state drives, etc.). The computing device mayinclude instructions, stored on the persistent storage, that whenexecuted by the processor(s) of the computing device cause the computingdevice to perform the functionality of the client (100) describedthroughout this application.

In one or more embodiments of the invention, the client(s) (100) areimplemented as a logical device. The logical device may utilize thecomputing resources of any number of computing devices and therebyprovide the functionality of the client(s) (100) described throughoutthis application.

In one or more embodiments of the invention, the backup storage system(150) stores backups of the persistent storage system (120) associatedwith the application containers. In one or more embodiments of theinvention, a backup is a full or partial copy of data stored in thepersistent storage system (120) at a specified point in time.

In one or more embodiments of the invention, a backup (152, 154) in thebackup storage system (150) is an incremental backup. In one or moreembodiments of the invention, an incremental backup is a backup thatonly stores changes in the persistent storage system (120) that weremade after a previous backup in the backup storage system. In contrast,a full backup may include all of the data in the persistent storagesystem (120) without taking into account when the data had been modifiedor otherwise written to the persistent storage system (120).

In one or more embodiments of the invention, if the data in thepersistent storage system is to be restored to a point in timeassociated with an incremental backup, the required backups needed toperform the restoration include at least: (i) the incremental backup,(ii) a full backup, and (iii) the intermediate backups (if any) that areassociated with points in time between the full backup and theincremental backups. In this manner, the required backups collectivelyinclude all of the data of the persistent storage system (120) at therequested point in time.

In one or more embodiments of the invention, the backup storage system(150) is implemented as a computing device (see e.g., FIG. 5). Thecomputing device may be, for example, a mobile phone, a tablet computer,a laptop computer, a desktop computer, a server, a distributed computingsystem, or a cloud resource. The computing device may include one ormore processors, memory (e.g., random access memory), and persistentstorage (e.g., disk drives, solid state drives, etc.). The computingdevice may include instructions stored on the persistent storage, thatwhen executed by the processor(s) of the computing device cause thecomputing device to perform the functionality of the backup storagesystem (150) described throughout this application.

In one or more embodiments of the invention, the backup storage system(150) is implemented as a logical device. The logical device may utilizethe computing resources of any number of computing devices and therebyprovide the functionality of the backup storage system (150) describedthroughout this application.

FIG. 2 shows a diagram of a node in accordance with one or moreembodiments of the invention. The node (200) may be an embodiment of anode (112A, 112N) discussed above. In one or more embodiments of theinvention, the node (200) includes one or more applications (210), apersistent storage system write tracker (220), and a block-based changelist (230). The node (200) may include additional, fewer, and/ordifferent components without departing from the invention. Each of theaforementioned components illustrated in FIG. 2 is discussed below.

In one or more embodiments of the invention, the applications (210)perform services for clients (e.g., 100, FIG. 1). The services mayinclude writing, reading, and/or otherwise modifying data that is storedin the persistent storage system (e.g., 114, FIG. 1). The applications(210) may each include functionality for writing data to the persistentstorage system and for notifying the persistent storage system writetracker (discussed below) of data written to the persistent storagesystem.

In one or more embodiments of the invention, the persistent storagesystem write tracker (220) tracks the changed portions of the persistentstorage system. The persistent storage system write tracker (220) trackssuch changed portions by maintaining a block-based change list (230).The persistent storage system write tracker (220) may communicate withthe applications (e.g., application A (210A), application N (210N)) toobtain information about which portions of the persistent storage systemhave had data written to since the last backup was performed.

In one or more embodiments of the invention, the persistent storagesystem write tracker (220) further includes functionality for providingthe block-based change list (230), or a copy thereof, to another nodeand/or to the backup agent. In one or more embodiments of the invention,the persistent storage system write tracker (220) may provide theblock-based change list (230), or a copy thereof, to another node inaccordance with a synchronization schedule. In one or more embodimentsof the invention, a synchronization schedule is a schedule followed bythe persistent storage system write tracker (220) (or another componentof the node (200)) that specifies when to initiate a synchronization ofthe block-based change list (230) with the other nodes in the nodecluster. If a synchronization schedule is triggered, the persistentstorage system write tracker (220) performing the synchronization maysend a copy of the block-based change list (230) to each node in thenode cluster. Other components of the node (200) (either illustrated inFIG. 2 or not shown) may perform the aforementioned functionalitywithout departing from the invention.

In one or more embodiments of the invention, the persistent storagesystem write tracker (220) is a physical device. The physical device mayinclude circuitry. The physical device may be, for example, afield-programmable gate array, application specific integrated circuit,programmable processor, microcontroller, digital signal processor, orother hardware processor. The physical device may be adapted to providethe functionality of the persistent storage system write tracker (220)described throughout this application.

In one or more embodiments of the invention, the persistent storagesystem write tracker (220) is implemented as computer instructions,e.g., computer code, stored on a persistent storage that when executedby a processor of the node (200) causes the node (200) to provide thefunctionality of the persistent storage system write tracker (220)described throughout this application.

In one or more embodiments of the invention, the block-based change list(230) is a data structure that specifies one or more portions of apersistent storage system that have been modified after a most recentbackup of the persistent storage system. The block-based change list(230) may be reset after a backup has been generated. In this manner,the block-based change list (230) does not specify modified portionsfrom before a most recent backup. The block-based change list (230) maybe stored in memory, cache, or stored persistently without departingfrom the invention.

FIGS. 3A-3C show flowcharts in accordance with one or more embodimentsof the invention. While the various steps in the flowcharts arepresented and described sequentially, one of ordinary skill in therelevant art will appreciate that some or all of the steps may beexecuted in different orders, may be combined or omitted, and some orall steps may be executed in parallel. In one embodiment of theinvention, the steps shown in FIGS. 3A-3C may be performed in parallelwith any other steps shown in FIGS. 3A-3C without departing from thescope of the invention.

FIG. 3A shows a flowchart for maintaining a block-based change list inaccordance with one or more embodiments of the invention. The methodshown in FIG. 3A may be performed by, for example, a node (112A, 112N,FIG. 1) that assumed the role of primary node. Other components of thesystem illustrated in FIG. 1 may perform the method of FIG. 3A withoutdeparting from the invention.

In step 300, a write request for data is obtained. The write request maybe obtained from a client. The write request may specify writing thedata to the persistent storage system.

In step 302, the write request is processed and stored in the persistentstorage system. In one or more embodiments of the invention, the writerequest is processed by writing the data to one or more portions of thepersistent storage system.

For example, if the persistent storage system includes a disk drive, andeach portion of the disk drive is a sector, the data may be written toall or a portion of a disk sector in the disk drive. Further, the datamay be written to more than one disk sector.

In step 304, a block-based change list is updated based on the processeddata. In one or more embodiments of the invention, the block-basedchange list is updated by determining the portion(s) (e.g., disksectors) of the persistent storage device to which the data was writtenand specifying such portions in the block-based change list. In thismanner, the block-based change list specifies the portions of thepersistent storage system that have been modified since the most recentbackup.

In step 306, a determination is made about whether a synchronizationschedule is triggered. As discussed above, the synchronization triggerspecifies when to initiate a synchronization of the block-based changelist. If the synchronization trigger is scheduled, the method proceedsto step 308; otherwise, the method ends following step 306.

FIG. 3B shows a flowchart for managing a node failover in accordancewith one or more embodiments of the invention. The method shown in FIG.3B may be performed by, for example, a node (112A, 112N, FIG. 1). Othercomponents of the system illustrated in FIG. 1 may perform the method ofFIG. 3B without departing from the invention.

In step 320, a failover notification is obtained from a primary node. Inone or more embodiments of the invention, the failover notification isobtained from the primary node. The primary node may detect an imminentfailover (e.g., an unprompted reboot) and send the failover notificationto the node performing the method of FIG. 3B in response to the detectedfailover. Alternatively, the failover notification may be the result ofa periodic check-in performed by the node to determine whether theprimary node has experienced a failover. A lack of response by theprimary node may result in the failover notification.

In one or more embodiments of the invention, the failover notificationis obtained from a client. The client may send the failover notificationbased on a determination that the primary node is not performing thetasks of the primary node.

In step 322, the role of primary node is assumed by the node. In one ormore embodiments of the invention, the role of the primary node isdetermined based on predetermined policies implemented by each node inthe node cluster for determining which node to assume the role ofprimary node should the current primary node experience a failover. Thepredetermined policies may include, for example, a list of hierarchicalorder for which node is to next assume the role of the primary node.Other predetermined policies may be implemented by the nodes todetermine which node to assume the role of the primary node withoutdeparting from the invention.

In step 324, a block-based change list update request is sent to theprimary node. In one or more embodiments of the invention, theblock-based change list update request specifies requesting the primarynode, if available and connected to the node, to send the block-basedchange list of the primary node to the node performing the method ofFIG. 3B.

In step 326, a response associated with the block-based change listupdate request is obtained. The response may include the block-basedchange list of the primary node, which may be more up-to-date than theblock-based change list of the node performing the method of FIG. 3B.

In step 328, the block-based change list is updated based on theresponse. In one or more embodiments of the invention, the block-basedchange list of the node performing the method of FIG. 3B is updated toreflect the portions of the persistent storage system that have beenwritten as specified in the obtained block-based change list from step326.

In one or more embodiments of the invention, if the primary node is notconnected to the node performing the method of FIG. 3B (or otherwise notavailable), then steps 324-328 are not performed.

FIG. 3C shows a flowchart for initiating an incremental backup inaccordance with one or more embodiments of the invention. The methodshown in FIG. 3C may be performed by, for example, a backup agent (116,FIG. 1). Other components of the system illustrated in FIG. 1 mayperform the method of FIG. 3C without departing from the invention.

In step 340, a backup request is obtained for a persistent storagesystem. The backup request may be obtained from a client managing theinitiation of backups. Alternatively, the backup request may be theresult of the backup agent implementing backup policies. As discussedabove, the backup policies may include schedules that specify when toperform a backup of the persistent storage device.

In one or more embodiments of the invention, the backup requestspecifies performing an incremental backup. As discussed above, theincremental backup may be a backup that only includes data written aftera most recent backup. The most recent backup may be a full backup oranother incremental backup without departing from the invention.

In step 342, a request for a block-based change list is sent to theprimary node. In one or more embodiments of the invention, the requestspecifies obtaining the most up-to-date version of the block-basedchange list from the primary node.

In one or more embodiments of the invention, the backup agent sends therequest to any node in the node cluster regardless of whether the nodeis a primary node. The node receiving the request may identify theprimary node in the node cluster and forward the request to the primarynode. The primary node may be identified via, e.g., a data structurethat specifies the primary node.

In step 344, a response associated with the request is obtained thatincludes the block-based change list. In one or more embodiments of theinvention, the response is sent by the primary node obtaining therequest.

In step 346, an incremental backup is performed using the block-basedchange list. In one or more embodiments of the invention, theincremental backup is performed by generating a backup of the portionsof the persistent storage device that are specified in the block-basedchange list to have been modified. The backup agent may generate a copyof blocks stored in the specified sections, and collectively store thecopies of the blocks in an incremental backup. The incremental backup,after generation is complete, may be sent to the backup storage systemto be stored.

In one or more embodiments of the invention, after the completion of theincremental backup, the backup agent may notify the primary node of thesuccessful incremental backup. The notification may result in theblock-based change list to be cleared of all specified portions. In thismanner, after a second incremental backup is initiated, the block-basedchange list only specifies the portions of the persistent storage systemthat have been changed after the incremental backup of FIG. 3C iscomplete.

Example

The following section describes an example. The example, illustrated inFIGS. 4A-4C, is not intended to limit the invention. Turning to theexample, consider a scenario in which a system stores data in apersistent storage system shared by a node cluster.

FIG. 4A shows a first diagram of the example system. For the sake ofbrevity, not all components of the example system are illustrated inFIG. 4A. The example system includes a node cluster (412), a persistentstorage system (414), a backup agent (416), a client (400), and a backupstorage system (450).

After a full backup (i.e., backup A (452)) of the persistent storagesystem (414) has been generated and stored in the backup storage system(450), the client (400) sends a write request to the node cluster (412)for data to be processed [1]. The primary node of the node cluster(i.e., node A (412A)) processes the write request by writing data to thepersistent storage system (414) [2]. Specifically, sections 1, 2, and 5(not shown) of the persistent storage system (414) store the writtendata. After the write request is processed, node A (412A) updates alocal block-based change list (not shown) of node A (412A) [3].

Further, node A (412A) determines that a synchronization schedule istriggered. The result of such determination is node A (412A) sending anupdate to the other nodes (i.e., node B (412B) and node C (412C)) in thenode cluster [4]. In this manner, all three nodes (e.g., 412A, 412B,412C) specify the changes to the persistent storage system (414) afterthe most recent backup.

FIG. 4B shows a second diagram of the example system. For the sake ofbrevity, not all components of the example system are illustrated inFIG. 4B. At a later point in time, node A (412A) experiences an imminentfailure due to overload of CPU [5]. Node B (412B) obtains a failovernotification that specifies the potential failover. In response, node B(412B) assumes the role of the new primary node. Further, node B (412B)communicates with node A (412A) to obtain an update to the localblock-based change list of node B (412B). Node A (412A) sends a responseto node B that includes the updated block-based change list [6]. Node B(412B) stores the updated block-based change list in memory [7].

FIG. 4C shows a third diagram of the example system. For the sake ofbrevity, not all components of the example system are illustrated inFIG. 4C. At a later point in time, a backup operation is triggered bythe backup agent (416) implementing a backup policy [8]. The backuppolicy specifies performing an incremental backup of the persistentstorage system (414). In response to the backup policy, the backup agent(416) communicates with the new primary node (i.e., node B (412B)) toobtain the block-based change list to be used for the incremental backup[9]. The backup agent (416) uses the block-based change list to generatethe incremental backup. The incremental backup includes the data storedin sections 1, 2, and 5 (not shown) of the persistent storage system(414). The incremental backup is transferred to the backup storagesystem (450) and stored as backup B (454) [10].

End of Example

As discussed above, embodiments of the invention may be implementedusing computing devices. FIG. 5 shows a diagram of a computing device inaccordance with one or more embodiments of the invention. The computingdevice (500) may include one or more computer processors (502),non-persistent storage (504) (e.g., volatile memory, such as randomaccess memory (RAM), cache memory), persistent storage (506) (e.g., ahard disk, an optical drive such as a compact disk (CD) drive or digitalversatile disk (DVD) drive, a flash memory, etc.), a communicationinterface (512) (e.g., Bluetooth interface, infrared interface, networkinterface, optical interface, etc.), input devices (510), output devices(508), and numerous other elements (not shown) and functionalities. Eachof these components is described below.

In one embodiment of the invention, the computer processor(s) (502) maybe an integrated circuit for processing instructions. For example, thecomputer processor(s) may be one or more cores or micro-cores of aprocessor. The computing device (500) may also include one or more inputdevices (510), such as a touchscreen, keyboard, mouse, microphone,touchpad, electronic pen, or any other type of input device. Further,the communication interface (512) may include an integrated circuit forconnecting the computing device (500) to a network (not shown) (e.g., alocal area network (LAN), a wide area network (WAN) such as theInternet, mobile network, or any other type of network) and/or toanother device, such as another computing device.

In one embodiment of the invention, the computing device (500) mayinclude one or more output devices (508), such as a screen (e.g., aliquid crystal display (LCD), a plasma display, touchscreen, cathode raytube (CRT) monitor, projector, or other display device), a printer,external storage, or any other output device. One or more of the outputdevices may be the same or different from the input device(s). The inputand output device(s) may be locally or remotely connected to thecomputer processor(s) (502), non-persistent storage (504), andpersistent storage (506). Many different types of computing devicesexist, and the aforementioned input and output device(s) may take otherforms.

One or more embodiments of the invention may be implemented usinginstructions executed by one or more processors of the data managementdevice. Further, such instructions may correspond to computer readableinstructions that are stored on one or more non-transitory computerreadable mediums.

One or more embodiments of the invention may improve the operation ofone or more computing devices. More specifically, embodiments of theinvention improve the efficiency of performing a backup operation of anode cluster in which a persistent storage system is shared among nodesin the node cluster. Because the role of primary node is constantlychanging in a node cluster environment, current implementations of thenode cluster environment may settle with only generating full backups ofthe data of a node cluster due to difficulty tracking what data has beenwritten to in the persistent storage device. Embodiments of theinvention enable the node cluster to track all changes made to thepersistent storage device and enable the backup agent to utilize thetracked changes in order to generate the incremental backups.

Thus, embodiments of the invention may address the problem ofinefficient use of computing resources. This problem arises due to thetechnological nature of the environment in which backup operations areperformed.

The problems discussed above should be understood as being examples ofproblems solved by embodiments of the invention disclosed herein and theinvention should not be limited to solving the same/similar problems.The disclosed invention is broadly applicable to address a range ofproblems beyond those discussed herein.

While the invention has been described above with respect to a limitednumber of embodiments, those skilled in the art, having the benefit ofthis disclosure, will appreciate that other embodiments can be devisedwhich do not depart from the scope of the invention as disclosed herein.Accordingly, the scope of the invention should be limited only by theattached claims.

What is claimed is:
 1. A method for managing a persistent storagesystem, the method comprising: obtaining, by a first node in a nodecluster, a write request, wherein the node cluster comprises the firstnode and a second node; processing the write request; storing dataassociated with the write request in a persistent storage system;updating a block-based change list based on the storing; making a firstdetermination that a synchronization schedule is triggered; in responseto the first determination: initiating a block-based change listsynchronization to the second node; after updating the block-basedchange list, obtaining a request from a backup agent for the block-basedchange list; and in response to the request, sending a second copy ofthe block-based change list to the backup agent.
 2. The method of claim1, wherein the data is stored in a first portion of the persistentstorage system, and wherein the block-based change list specifies thefirst portion of the persistent storage system.
 3. The method of claim1, wherein initiating the block-based change list synchronizationcomprises: generating at least a copy of the block-based change list;and sending the copy of the block-based change list to the second node.4. The method of claim 1, wherein the block-based change list is used togenerate an incremental backup of the persistent storage system.
 5. Themethod of claim 1, wherein the first node assumes a role of primarynode.
 6. The method of claim 5, further comprising: identifying animminent failover of the first node; and in response to the imminentfailover, sending a failover notification to the second node, whereinthe failover notification specifies the second node assuming the role ofprimary node.
 7. A system, comprising: a processor; and memorycomprising instructions which, when executed by the processor, perform amethod, the method comprising: obtaining, by a first node in a nodecluster, a write request, wherein the node cluster comprises the firstnode and a second node; processing the write request; storing dataassociated with the write request in a persistent storage system;updating a block-based change list based on the storing; making a firstdetermination that a synchronization schedule is triggered; and inresponse to the first determination: initiating a block-based changelist synchronization to the second node; after updating the block-basedchange list, obtaining a request from a backup agent for the block-basedchange list; and in response to the request, sending a second copy ofthe block-based change list to the backup agent.
 8. The system of claim7, wherein the data is stored in a first portion of the persistentstorage system, and wherein the block-based change list specifies thefirst portion of the persistent storage system.
 9. The system of claim7, wherein initiating the block-based change list synchronizationcomprises: generating at least a copy of the block-based change list;and sending the copy of the block-based change list to the second node.10. The system of claim 7, wherein the block-based change list is usedto generate an incremental backup of the persistent storage system. 11.The system of claim 7, wherein the first node assumes a role of primarynode.
 12. The system of claim 11, the method further comprising:identifying an imminent failover of the first node; and in response tothe imminent failover, sending a failover notification to the secondnode, wherein the failover notification specifies the second nodeassuming the role of primary node.
 13. A non-transitory computerreadable medium comprising computer readable program code, which whenexecuted by a computer processor enables the computer processor toperform a method for performing a backup operation, the methodcomprising: obtaining, by a first node in a node cluster, a writerequest, wherein the node cluster comprises the first node and a secondnode; processing the write request; storing data associated with thewrite request in a persistent storage system; updating a block-basedchange list based on the storing; making a first determination that asynchronization schedule is triggered; and in response to the firstdetermination: initiating a block-based change list synchronization tothe second node; after updating the block-based change list, obtaining arequest from a backup agent for the block-based change list; and inresponse to the request, sending a second copy of the block-based changelist to the backup agent.
 14. The non-transitory computer readablemedium of claim 13, wherein the data is stored in a first portion of thepersistent storage system, and wherein the block-based change listspecifies the first portion of the persistent storage system.
 15. Thenon-transitory computer readable medium of claim 13, wherein initiatingthe block-based change list synchronization comprises: generating atleast a copy of the block-based change list; and sending the copy of theblock-based change list to the second node.
 16. The non-transitorycomputer readable medium of claim 13, wherein the block-based changelist is used to generate an incremental backup of the persistent storagesystem.
 17. The non-transitory computer readable medium of claim 13, themethod further comprising: identifying an imminent failover of the firstnode; and in response to the imminent failover, sending a failovernotification to the second node, wherein the failover notificationspecifies the second node assuming a role of primary node.